﻿/*
 * loginfo.hpp
 *
 *  Created on: 2016年12月6日
 *      Author: work
 */

#ifndef _DM_OS_LOG_LOGINFO_HPP_
#define _DM_OS_LOG_LOGINFO_HPP_

#include <dm/export.hpp>

#ifndef DM_API_OS_LOG
#define DM_API_OS_LOG DM_API_IMPORT
#else
#define DM_API_FIXDSTRING DM_API_OS_LOG
#endif

#include <dm/types.hpp>
#include <dm/fixdstring.hpp>
#include <dm/timestamp.hpp>

#ifdef WIN32
#include <Windows.h>
#else
#include <unistd.h>
#endif

namespace dm{
namespace os{

#ifndef DM_OS_LOG_LEN_OF_MSG
#define DM_OS_LOG_LEN_OF_MSG 1024
#endif

#ifndef DM_OS_LOG_LEN_OF_MODULE
#define DM_OS_LOG_LEN_OF_MODULE 128
#endif

#ifndef DM_OS_LOG_LEN_OF_FUN
#define DM_OS_LOG_LEN_OF_FUN 128
#endif

class DM_API_OS_LOG CLogInfo{
public:
	enum{
		LenOfMsg = DM_OS_LOG_LEN_OF_MSG,
		LenOfModule = DM_OS_LOG_LEN_OF_MODULE,
		LenOfFun = DM_OS_LOG_LEN_OF_FUN
	};

	enum ELevel{
		Debug = 0,
		Info,
		Warnning,
		Error
	};

	typedef dm::CFixdString<LenOfMsg> msg_t;
	typedef dm::CFixdString<LenOfModule> module_t;
	typedef dm::CFixdString<LenOfFun> fun_t;
	typedef const void * obj_t;

#ifdef WIN32
	typedef DWORD pid_t;
#else
	typedef ::pid_t pid_t;
#endif

public:
	CLogInfo();
	CLogInfo( const CLogInfo& );
	CLogInfo& operator=( const CLogInfo& loginfo );

public:
	pid_t pid;
	dm::CTimeStamp t;
	ELevel level;
	module_t module;
	fun_t fun;
	obj_t obj;
	msg_t msg;
};

}
}

#endif /* INCLUDE_DM_OS_LOG_LOGINFO_HPP_ */
